package persistencia;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;
import bean.DireccionVO;
import bean.ProfesorVO;

public class DireccionDAO {

private static DireccionDAO ins;
	
	private DireccionDAO(){
		
	}
	
	public static DireccionDAO getInstancia(){
		
		if(ins == null)
			ins = new DireccionDAO();
		return ins;
		
	}
	
	public DireccionVO obtener(ProfesorVO arg){
		
		DireccionVO d = null;
		String sql = "Select calle, numero, codigoPostal, localidad, piso, depto From Profesor Where legajo = ?";
		PreparedStatement stmt = null;
		ResultSet rs = null;
		
		try {
			Connection con = DataSource.getConexion();
			stmt = con.prepareStatement(sql);
			stmt.setInt(1, arg.getNroLegajo());
			rs = stmt.executeQuery();
			if(rs.next()){
				d = new DireccionVO();
				d.setCalle(rs.getString(1));
				d.setNumero(rs.getInt(2));
				d.setCodPostal(rs.getString(3));
				d.setLocalidad(rs.getString(4));
				d.setPiso(rs.getInt(5));
				d.setDepto(rs.getString(6));
			}
			DataSource.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return d ;
		
	}
	
	
	public Vector<DireccionVO> obtenerTodos(){
		
        Vector<DireccionVO> direcciones = new Vector<DireccionVO>();
		String sql = "Select calle, numero, codigoPostal, localidad, piso, depto From Profesor";
		Statement stmt = null;
		ResultSet rs = null;
		
		try {
			Connection con = DataSource.getConexion();
			stmt = con.createStatement();
			rs = stmt.executeQuery(sql);
			while(rs.next()){
				DireccionVO d = new DireccionVO();
				d.setCalle(rs.getString(1));
				d.setNumero(rs.getInt(2));
				d.setCodPostal(rs.getString(3));
				d.setLocalidad(rs.getString(4));
				d.setPiso(rs.getInt(5));
				d.setDepto(rs.getString(6));
				direcciones.add(d);
			}
			DataSource.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return direcciones;
		
	}
	
	
	public void  guardar(DireccionVO d, ProfesorVO arg){
		
         actualizar(d,arg);   
	}
	
	
	public void actualizar(DireccionVO d, ProfesorVO arg){
		
		String sql = "Update Profesor Set calle = ?, numero = ?, codigoPostal = ?, localidad = ?, piso = ?, depto = ? Where legajo =? ";
		PreparedStatement stmt = null;
		
		try {
			Connection con = DataSource.getConexion();
			stmt = con.prepareStatement(sql);
			stmt.setString(1, d.getCalle());
			stmt.setInt(2, d.getNumero());
			stmt.setString(3, d.getCodPostal());
			stmt.setString(4, d.getLocalidad());
			stmt.setInt(5, d.getPiso());
			stmt.setString(6, d.getDepto());
			stmt.setInt(7, arg.getNroLegajo());
			stmt.execute();
			DataSource.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}	
	}
	
	
}
